Skip to content

✨ (signer-zcash) [LIVE-23287]: Introduce Zcash signer#1294

Draft
may01 wants to merge 2 commits intoLedgerHQ:developfrom
yldio:feat/LIVE-23287-zcash-signer-introduction
Draft

✨ (signer-zcash) [LIVE-23287]: Introduce Zcash signer#1294
may01 wants to merge 2 commits intoLedgerHQ:developfrom
yldio:feat/LIVE-23287-zcash-signer-introduction

Conversation

@may01
Copy link
Copy Markdown
Contributor

@may01 may01 commented Feb 10, 2026

📝 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

  • Feature:

✅ Checklist

Pull Requests must pass CI checks and undergo code review. Set the PR as Draft if it is not yet ready for review.

  • Covered by automatic tests
  • Changeset is provided
  • Documentation is up-to-date
  • Impact of the changes:
    • New package @ledgerhq/device-signer-kit-zcash added to the monorepo
    • Sample app updated to include Zcash signer UI and provider
    • SignerView component updated to display Zcash signer option
    • No breaking changes to existing packages

🧐 Checklist for the PR Reviewers

  • The code aligns with the requirements described in the linked JIRA or GitHub issue.
  • The PR description clearly documents the changes made and explains any technical trade-offs or design decisions.
  • There are no undocumented trade-offs, technical debt, or maintainability issues.
  • The PR has been tested thoroughly, and any potential edge cases have been considered and handled.
  • Any new dependencies have been justified and documented.

Copilot AI review requested due to automatic review settings February 10, 2026 18:54
@may01 may01 requested a review from a team as a code owner February 10, 2026 18:54
@vercel
Copy link
Copy Markdown

vercel Bot commented Feb 10, 2026

@may01 is attempting to deploy a commit to the LedgerHQ Team on Vercel.

A member of the Team first needs to authorize it.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-zcash package 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
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changelog entry should capitalize "Zcash" consistently with the official brand name and other parts of the documentation. Change "zcash" to "Zcash".

Suggested change
- Initial signer implementation for zcash
- Initial signer implementation for Zcash

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +3
# Signer zcash

This package provides a signer implementation for zcash.
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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".

Suggested change
# Signer zcash
This package provides a signer implementation for zcash.
# Zcash Signer Kit
This package provides a signer implementation for Zcash.

Copilot uses AI. Check for mistakes.
});
},
initialValues: {
derivationPath: "44'/0'/0'/0/0",
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
});
},
initialValues: {
derivationPath: "44'/0'/0'/0/0",
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +24 to +28
//private readonly args: SignMessageCommandArgs;

constructor(_args: SignMessageCommandArgs) {
//this.args = args;
}
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
- `derivationPath`

- **Required**
- **Type:** `string` (e.g., `"m/44'/0'/0'/0/0"`)
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
- **Type:** `string` (e.g., `"m/44'/0'/0'/0/0"`)
- **Type:** `string` (e.g., `"m/44'/133'/0'/0/0"`)

Copilot uses AI. Check for mistakes.
return signer.signMessage(derivationPath, message);
},
initialValues: {
derivationPath: "44'/0'/0'/0/0",
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +26 to +30
//private readonly args: GetAddressCommandArgs;

constructor(_args: GetAddressCommandArgs) {
//this.args = args;
}
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +6
export enum ZcashErrorCodes {
// Define your error codes here
// Example:
// INVALID_DERIVATION_PATH = 0x6a80,
// TRANSACTION_PARSING_ERROR = 0x6a81,
}
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +3 to +6
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
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Member

@mbertin-ledger mbertin-ledger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[MUST] Do Unit tests

@vercel
Copy link
Copy Markdown

vercel Bot commented Feb 11, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
device-sdk-ts-sample Ready Ready Preview, Comment Feb 11, 2026 8:46am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
doc-device-management-kit Ignored Ignored Feb 11, 2026 8:46am

Request Review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants