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 ++++++++ packages/subproviders/test/integration/ledger_subprovider_test.ts | 5 +++++ 2 files changed, 13 insertions(+) (limited to 'packages/subproviders') 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. diff --git a/packages/subproviders/test/integration/ledger_subprovider_test.ts b/packages/subproviders/test/integration/ledger_subprovider_test.ts index a9f538038..8ed69edaf 100644 --- a/packages/subproviders/test/integration/ledger_subprovider_test.ts +++ b/packages/subproviders/test/integration/ledger_subprovider_test.ts @@ -42,6 +42,10 @@ describe('LedgerSubprovider', () => { expect(accounts[0]).to.not.be.an('undefined'); expect(accounts.length).to.be.equal(10); }); + it('returns the expected account', async () => { + const accounts = await ledgerSubprovider.getAccountsAsync(); + expect(accounts[0]).to.be.equal(TEST_RPC_ACCOUNT_0); + }); it('returns requested number of accounts', async () => { const numberOfAccounts = 20; const accounts = await ledgerSubprovider.getAccountsAsync(numberOfAccounts); @@ -61,6 +65,7 @@ describe('LedgerSubprovider', () => { to: '0x0000000000000000000000000000000000000000', value: '0x00', chainId: 3, + from: TEST_RPC_ACCOUNT_0, }; const txHex = await ledgerSubprovider.signTransactionAsync(tx); expect(txHex).to.be.equal( -- cgit v1.2.3