aboutsummaryrefslogtreecommitdiffstats
path: root/packages/subproviders/README.md
blob: 2baa73990826e99033b3e46d5101e776537f59fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
@0xproject/subproviders
--------

A few useful web3 subproviders including a LedgerSubprovider useful for adding Ledger Nano S support.

## Installation

```
yarn add @0xproject/subproviders
```

## Usage

Simply import the subprovider you are interested in using:

```javascript
import {
    ledgerEthereumBrowserClientFactoryAsync as ledgerEthereumClientFactoryAsync,
    LedgerSubprovider,
} from '@0xproject/subproviders';

const ledgerSubprovider = new LedgerSubprovider(
    networkId,
    ledgerEthereumClientFactoryAsync,
);

const accounts = await ledgerSubprovider.getAccountsAsync();
```

### Subproviders

#### Ledger Nano S subprovider

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.

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

#### Injected Web3 subprovider

A subprovider that relays all signing related requests to a particular provider (in our case the provider injected onto the web page), while sending all other requests to a different provider (perhaps your own backing Ethereum node or Infura).

## Contributing

We strongly encourage the community to help us make improvements and to determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository.

Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.

### Install Dependencies

```bash
yarn install
```

### Build

```bash
yarn build
```

### Clean

```bash
yarn clean
```

### Lint

```bash
yarn lint
```

### Run tests

#### Unit tests

```bash
yarn run test:unit
```

#### Integration tests

In order to run the integration tests, make sure you have a Ledger Nano S available.

- Plug it into your computer
- Unlock the device
- Open the on-device Ethereum app
- Make sure "browser support" is disabled

Then run:

```
yarn test:integration
```

#### All tests

```bash
yarn run test:all
```