Skip to content

Ethers extension for LedgerSigner for Ledger Hardware Wallet support.

License

Notifications You must be signed in to change notification settings

ethers-io/ext-signer-ledger

Repository files navigation

Ethers: LedgerSigner

A LedgerSigner connects to a Ledger Hardware Wallet over some transport, and allows all normal Signer operations protected by the hardware wallet.

Installing

When you use the LedgerSigner, you must also include the intended transport, which provides a generic interface for the communication channel to the Ledger Hardware Device.

Below are examples and notes on installing the necessary transports:

# Install the extension pacakge
/home/ricmoo> npm install @ethers-ext/signer-ledger

# Depending on your environment, install any of the
# relevant Transport(s) below:

# For use of a USB-based device in node
# - You must include "dom" in your TypeScript libs
# - On MacOD, only the current user may access the USB
/home/ricmoo> npm install @ledgerhq/hw-transport-node-hid

# For use of a BLE-based device in node
/home/ricmoo> npm install @ledgerhq/hw-transport-node-ble

# For use of USB-based device in a browser using the WebUSB API
/home/ricmoo> npm install @ledgerhq/hw-transport-webusb

# For use of USB-based device in a browser using the WebHID API
/home/ricmoo> npm install @ledgerhq/hw-transport-webhid

# For use of BLE-based device in a browser using the Web Bluetooth API
/home/ricmoo> npm install @ledgerhq/hw-transport-web-ble

# For testing purposes, a virtual device for mocking
/home/ricmoo> npm install @ledgerhq/hw-transport-mocker

Usage

new LedgerSigner(transport, provider?, path?) => Signer

Create a new LedgerSigner connected to a Ledger Hardware Wallet via transport and optionally connected to the blockchain using provider. The default path is the path for Account #0, otherwise the logic for the LedgerSigner.getPath is used.

import { LedgerSigner } from "@ethers-ext/signer-ledger";

// Import your relevant transport; see the above "Installing"
// section for the package name; for example, we'll use node-hid
import HIDTransport from "@ledgerhq/hw-transport-node-hid";

const signer = new LedgerSigner(HIDTransport, provider);

signer.getSigner(pathOrAccount?) => LedgerSigner

Returns a new Signer with the same transport and provider, but with using the pathOrAccount.

LedgerSigner.getPath(pathOrAccount?) => string

Returns the HD path for pathOrAccount. If none is provided, the default path (account #0) is returned, if a number is provided, the HD path for that account is returned, otherwise a valid HD path is expected (starting with m/).

Notes

License

MIT License.

About

Ethers extension for LedgerSigner for Ledger Hardware Wallet support.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published