From a941f0ffb6c4c011160e04522613318a3da9c5b5 Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Tue, 6 Mar 2018 20:49:05 -0500 Subject: README --- packages/subproviders/README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'packages/subproviders/README.md') diff --git a/packages/subproviders/README.md b/packages/subproviders/README.md index 67a6a92d2..52ad3388e 100644 --- a/packages/subproviders/README.md +++ b/packages/subproviders/README.md @@ -42,6 +42,26 @@ const accounts = await ledgerSubprovider.getAccountsAsync(); A subprovider that enables your dApp to send signing requests to a user's Ledger Nano S hardware wallet. These can be requests to sign transactions or messages. +##### Ledger Nano S + Node-hid (usb) + +By default, node-hid transport support is an optional dependency. This is due to the requirement of native usb developer packages on the host system. If these aren't installed the entire `npm install` fails. We also no longer export node-hid transport client factories. To re-create this see our integration tests or follow the example below: + +```typescript +import Eth from '@ledgerhq/hw-app-eth'; +import TransportNodeHid from '@ledgerhq/hw-transport-node-hid'; +async function ledgerEthereumNodeJsClientFactoryAsync(): Promise { + const ledgerConnection = await TransportNodeHid.create(); + const ledgerEthClient = new Eth(ledgerConnection); + return ledgerEthClient; +} + +// Create a LedgerSubprovider with the node-hid transport +ledgerSubprovider = new LedgerSubprovider({ + networkId, + ledgerEthereumClientFactoryAsync: ledgerEthereumNodeJsClientFactoryAsync, +}); +``` + #### Redundant RPC subprovider A subprovider which attempts to send an RPC call to a list of RPC endpoints sequentially, until one of them returns a successful response. -- cgit v1.2.3 From e2e6ae937d2d38210442f493c24d492e3b477907 Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Wed, 7 Mar 2018 12:30:27 -0500 Subject: README on derivation path --- packages/subproviders/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'packages/subproviders/README.md') diff --git a/packages/subproviders/README.md b/packages/subproviders/README.md index 52ad3388e..f3e3bd0ae 100644 --- a/packages/subproviders/README.md +++ b/packages/subproviders/README.md @@ -42,6 +42,8 @@ const accounts = await ledgerSubprovider.getAccountsAsync(); A subprovider that enables your dApp to send signing requests to a user's Ledger Nano S hardware wallet. These can be requests to sign transactions or messages. +Ledger Nano (and this library) by default uses a derivation path of `44'/60'/0'`. This is different to TestRPC which by default uses `m/44'/60'/0'/0`. This is a configuration option in the Ledger Subprovider package. + ##### Ledger Nano S + Node-hid (usb) By default, node-hid transport support is an optional dependency. This is due to the requirement of native usb developer packages on the host system. If these aren't installed the entire `npm install` fails. We also no longer export node-hid transport client factories. To re-create this see our integration tests or follow the example below: @@ -62,6 +64,12 @@ ledgerSubprovider = new LedgerSubprovider({ }); ``` +##### Testing Subprovider + Ledger integration + +To run our integration tests you need a ledger configured with our development mnemonic seed. +This is available in the top level package.json under `mnemonic`. +Configure your ledger and run the integration tests. We assume a derivation path of `m/44'/60'/0'/0` and this is configured in the tests. To this setup and derivation path, your first account should be `0x5409ed021d9299bf6814279a6a1411a7e866a631`, exactly like TestRPC. + #### Redundant RPC subprovider A subprovider which attempts to send an RPC call to a list of RPC endpoints sequentially, until one of them returns a successful response. -- cgit v1.2.3 From 1a6c2e2baca33ce377b86f30abe0c16619a3577c Mon Sep 17 00:00:00 2001 From: Jacob Evans Date: Wed, 7 Mar 2018 15:20:06 -0500 Subject: Feedback --- packages/subproviders/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'packages/subproviders/README.md') diff --git a/packages/subproviders/README.md b/packages/subproviders/README.md index f3e3bd0ae..53fbb2348 100644 --- a/packages/subproviders/README.md +++ b/packages/subproviders/README.md @@ -67,8 +67,8 @@ ledgerSubprovider = new LedgerSubprovider({ ##### Testing Subprovider + Ledger integration To run our integration tests you need a ledger configured with our development mnemonic seed. -This is available in the top level package.json under `mnemonic`. -Configure your ledger and run the integration tests. We assume a derivation path of `m/44'/60'/0'/0` and this is configured in the tests. To this setup and derivation path, your first account should be `0x5409ed021d9299bf6814279a6a1411a7e866a631`, exactly like TestRPC. +Our development mnemonic is `concert load couple harbor equip island argue ramp clarify fence smart topic`. +Configure your ledger and run the integration tests. We assume a derivation path of `m/44'/60'/0'/0` and this is configured in the tests. With this setup and derivation path, your first account should be `0x5409ed021d9299bf6814279a6a1411a7e866a631`, exactly like TestRPC. #### Redundant RPC subprovider -- cgit v1.2.3 From bd8b8abfea725dbf0826af407ca1f409a88701bf Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Wed, 7 Mar 2018 21:44:11 +0100 Subject: Improve README --- packages/subproviders/README.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'packages/subproviders/README.md') diff --git a/packages/subproviders/README.md b/packages/subproviders/README.md index 53fbb2348..4614342b2 100644 --- a/packages/subproviders/README.md +++ b/packages/subproviders/README.md @@ -64,12 +64,6 @@ ledgerSubprovider = new LedgerSubprovider({ }); ``` -##### Testing Subprovider + Ledger integration - -To run our integration tests you need a ledger configured with our development mnemonic seed. -Our development mnemonic is `concert load couple harbor equip island argue ramp clarify fence smart topic`. -Configure your ledger and run the integration tests. We assume a derivation path of `m/44'/60'/0'/0` and this is configured in the tests. With this setup and derivation path, your first account should be `0x5409ed021d9299bf6814279a6a1411a7e866a631`, exactly like TestRPC. - #### Redundant RPC subprovider A subprovider which attempts to send an RPC call to a list of RPC endpoints sequentially, until one of them returns a successful response. @@ -132,10 +126,12 @@ yarn run test:unit In order to run the integration tests, make sure you have a Ledger Nano S available. +* Setup your Ledger with the development mnemonic seed: `concert load couple harbor equip island argue ramp clarify fence smart topic` * Plug it into your computer * Unlock the device * Open the on-device Ethereum app -* Make sure "browser support" is disabled +* Make sure "browser support" and "contract data" are disabled +* Start [TestRPC](https://github.com/trufflesuite/ganache-cli) locally at port `8545` Then run: @@ -143,6 +139,8 @@ Then run: yarn test:integration ``` +**Note:** We assume a derivation path of `m/44'/60'/0'/0` which is already configured in the tests. With this setup and derivation path, your first account should be `0x5409ed021d9299bf6814279a6a1411a7e866a631`, exactly like TestRPC. + #### All tests ```bash -- cgit v1.2.3