Files
protocol/packages/subproviders
Brandon Millman 36a49966eb Merge branch 'development' into feature/testnet-faucets/order-dispenser
* development:
  Attribute the origins of NonceTracker
  Move BlockParamLiteral to shared types package
  Fixes
  Move BlockParam and BlockParamLiteral to shared types
  Rename called to something more readable
  Newline prettier/lint
  Yarn.lock
  Refactor tests for reuse of the fixture subprovider
  Remove re-fetch of transaction count on error
  Disable linter for multiple class declarations
  Remove double declaration
  Enable CIRCLECI and declare web3
  Test faucets to use new NonceTracker
  Update changelog
  Readability and prettier
  Prettify
  Nonce tracker subprovider Caches the nonce when a request to getTransactionCount is made and increments the pending nonce after successful transactions
2018-02-06 15:36:00 -08:00
..
2018-02-06 15:16:28 -08:00
2018-02-06 11:34:22 -08:00

@0xproject/subproviders

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

We have written up a Wiki article detailing some use cases of this subprovider package.

Installation

yarn add @0xproject/subproviders

Usage

Simply import the subprovider you are interested in using:

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 recommend that the community help us make improvements and 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 before getting started.

Install Dependencies

If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:

yarn config set workspaces-experimental true
yarn install

Build

yarn build

or

yarn build:watch

Clean

yarn clean

Lint

yarn lint

Run tests

Unit tests

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

yarn run test:all