✨ (signer-zcash) [LIVE-23287]: Introduce Zcash signer#1294
✨ (signer-zcash) [LIVE-23287]: Introduce Zcash signer#1294may01 wants to merge 2 commits intoLedgerHQ:developfrom
Conversation
|
@may01 is attempting to deploy a commit to the LedgerHQ Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
Pull request overview
This pull request introduces a new Zcash signer package (@ledgerhq/device-signer-kit-zcash) to the Device Management Kit. The implementation follows the established architecture pattern used by other signers in the monorepo (Ethereum, Solana, Bitcoin), providing a consistent interface for Zcash transaction and message signing operations with Ledger devices.
Changes:
- New
@ledgerhq/device-signer-kit-zcashpackage with complete signer infrastructure including API interfaces, internal use cases, dependency injection setup, and placeholder command implementations - Sample app integration with Zcash signer UI components, provider, and route configuration
- Comprehensive documentation including README, CHANGELOG, and API reference documentation
Reviewed changes
Copilot reviewed 62 out of 64 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/signer/signer-zcash/* | New Zcash signer package with API interfaces, internal implementations, tests, and configuration |
| apps/sample/src/components/SignerZcashView/index.tsx | Sample app UI component for testing Zcash signer functionality |
| apps/sample/src/providers/SignerZcashProvider/index.tsx | React context provider for Zcash signer state management |
| apps/sample/src/app/signers/zcash/page.tsx | Next.js route page for Zcash signer demo |
| apps/sample/src/app/client-layout.tsx | Integration of Zcash provider into app provider hierarchy |
| apps/sample/package.json | Added Zcash signer dependency and unrelated pip install flag change |
| apps/docs/pages/docs/references/signers/zcash.mdx | Comprehensive API documentation for Zcash signer |
| apps/docs/pages/docs/references/signers/_meta.js | Navigation metadata for documentation site |
| apps/sample/api/pycache/index.cpython-313.pyc | Binary Python cache file (should not be committed) |
| pnpm-lock.yaml | Updated lockfile with Zcash signer dependencies |
| package.json | Added convenience script for Zcash signer development |
| .changeset/strong-beans-hope.md | Changeset for version bump |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ## [0.1.0] - 2026-02-02 | ||
|
|
||
| ### Added | ||
| - Initial signer implementation for zcash |
There was a problem hiding this comment.
The changelog entry should capitalize "Zcash" consistently with the official brand name and other parts of the documentation. Change "zcash" to "Zcash".
| - Initial signer implementation for zcash | |
| - Initial signer implementation for Zcash |
| # Signer zcash | ||
|
|
||
| This package provides a signer implementation for zcash. |
There was a problem hiding this comment.
The README title should use proper capitalization. According to the naming convention seen in other signers (Ethereum, Solana, Bitcoin), the title should be "Zcash Signer Kit" or "Ledger Zcash Signer" instead of "Signer zcash". The second sentence should also capitalize "Zcash".
| # Signer zcash | |
| This package provides a signer implementation for zcash. | |
| # Zcash Signer Kit | |
| This package provides a signer implementation for Zcash. |
| }); | ||
| }, | ||
| initialValues: { | ||
| derivationPath: "44'/0'/0'/0/0", |
There was a problem hiding this comment.
According to SLIP-0044, the correct coin type for Zcash is 133, not 0. The derivation path in the initial values should be "44'/133'/0'/0/0" instead of "44'/0'/0'/0/0" to match the Zcash standard and be consistent with the test files.
| }); | ||
| }, | ||
| initialValues: { | ||
| derivationPath: "44'/0'/0'/0/0", |
There was a problem hiding this comment.
According to SLIP-0044, the correct coin type for Zcash is 133, not 0. The derivation path in the initial values should be "44'/133'/0'/0/0" instead of "44'/0'/0'/0/0" to match the Zcash standard and be consistent with the test files.
| //private readonly args: SignMessageCommandArgs; | ||
|
|
||
| constructor(_args: SignMessageCommandArgs) { | ||
| //this.args = args; | ||
| } |
There was a problem hiding this comment.
Commented-out code should be removed rather than left in place. The commented constructor parameter assignment and field declaration serve no purpose and reduce code clarity. Either implement the code properly if needed, or remove these comments entirely.
| - `derivationPath` | ||
|
|
||
| - **Required** | ||
| - **Type:** `string` (e.g., `"m/44'/0'/0'/0/0"`) |
There was a problem hiding this comment.
According to SLIP-0044, the correct coin type for Zcash is 133, not 0. The derivation path examples throughout the documentation should use "m/44'/133'/0'/0/0" instead of "m/44'/0'/0'/0/0". This is consistent with the test files which correctly use 133.
| - **Type:** `string` (e.g., `"m/44'/0'/0'/0/0"`) | |
| - **Type:** `string` (e.g., `"m/44'/133'/0'/0/0"`) |
| return signer.signMessage(derivationPath, message); | ||
| }, | ||
| initialValues: { | ||
| derivationPath: "44'/0'/0'/0/0", |
There was a problem hiding this comment.
According to SLIP-0044, the correct coin type for Zcash is 133, not 0. The derivation path in the initial values should be "44'/133'/0'/0/0" instead of "44'/0'/0'/0/0" to match the Zcash standard and be consistent with the test files.
| //private readonly args: GetAddressCommandArgs; | ||
|
|
||
| constructor(_args: GetAddressCommandArgs) { | ||
| //this.args = args; | ||
| } |
There was a problem hiding this comment.
Commented-out code should be removed rather than left in place. The commented constructor parameter assignment and field declaration serve no purpose and reduce code clarity. Either implement the code properly if needed, or remove these comments entirely.
| export enum ZcashErrorCodes { | ||
| // Define your error codes here | ||
| // Example: | ||
| // INVALID_DERIVATION_PATH = 0x6a80, | ||
| // TRANSACTION_PARSING_ERROR = 0x6a81, | ||
| } |
There was a problem hiding this comment.
The empty ZcashErrorCodes enum may cause type checking issues. Consider defining at least one placeholder error code or using a type alias like other signers. For example, you could add a generic error code like UNKNOWN = 0x6000 or change it to a type union like the Ethereum signer does.
| This module provides the implementation of the Ledger zcash signer of the Device Management Kit. It enables interaction with the zcash application on a Ledger device including: | ||
|
|
||
| - Retrieving the zcash address using a given derivation path | ||
| - Signing a zcash transaction |
There was a problem hiding this comment.
Inconsistent capitalization of "Zcash" and "zcash" in the documentation. The title correctly uses "Zcash Signer Kit", but the description uses lowercase "zcash" in multiple places (lines 3, 5, 6). According to the naming convention and the official Zcash brand, "Zcash" should be capitalized consistently throughout.
| This module provides the implementation of the Ledger zcash signer of the Device Management Kit. It enables interaction with the zcash application on a Ledger device including: | |
| - Retrieving the zcash address using a given derivation path | |
| - Signing a zcash transaction | |
| This module provides the implementation of the Ledger Zcash signer of the Device Management Kit. It enables interaction with the Zcash application on a Ledger device including: | |
| - Retrieving the Zcash address using a given derivation path | |
| - Signing a Zcash transaction |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
📝 Description
This PR introduces a new Zcash signer package (
@ledgerhq/device-signer-kit-zcash) to the Device Management Kit, enabling Zcash transaction and message signing functionality with Ledger devices.Functionality of the signer methods will be implemented in next PR's
❓ Context
✅ Checklist
Pull Requests must pass CI checks and undergo code review. Set the PR as Draft if it is not yet ready for review.
@ledgerhq/device-signer-kit-zcashadded to the monorepo🧐 Checklist for the PR Reviewers