You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Team Ledger Live 4612fbfae7
v1.19.2-nightly.20191213T2135
1 day ago
.circleci macos ci 2 months ago
.github Fix issue number getting cut 4 months ago
.storybook fix: yarn storybook 11 months ago
build [Mac] Fix USB connection 1 month ago
docs better screenshot.png 1 year ago
flow-defs LL-1483 Bookmarking functionality for accounts 4 months ago
flow-typed/npm Bootstrap libcore ETH and ERC20 6 months ago
scripts Custom link on operation details for xtz 1 week ago
src Merge branch 'develop' into tezos-polish-cache-overdelegated 1 day ago
static New Crowdin translations (#2554) 1 day ago
test-e2e migrated to styled component v4; refactored style structure 2 months ago
webpack fixed error stack on the error screen 2 weeks ago
.babelrc Use REAL babel.config in electron-webpack 1 year ago
.eslintignore Move src/families files to reject mobile/common approach 1 month ago
.eslintrc Test e2e (#2342) 2 months ago
.flowconfig wip rebased 1 month ago
.gitattributes update cache check windows 2 months ago
.gitignore Move src/families files to reject mobile/common approach 1 month ago
.npmrc \n 1 year ago
.nvmrc Add \n to .nvmrc 1 year ago
.prettierignore Move src/families files to reject mobile/common approach 1 month ago
.prettierrc export to mobile after account migration 3 months ago
.travis.yml update cache check windows 2 months ago
LICENSE Add LICENSE 1 year ago
README.md Update README.md 2 weeks ago
TERMS.md Fixes Terms 5 days ago
babel.config.js Update Babel config to prepare working cli 1 year ago
crowdin.yml crowdin config 1 year ago
electron-builder-nightly.yml Add hardenedRuntime to nightlies as well 1 month ago
electron-builder.yml LL-1931 [Mac] Notarize .app and .dmg 1 month ago
jest.config.js __APP_VERSION__ jest global 1 year ago
package.json v1.19.2-nightly.20191213T2135 1 day ago
yarn.lock Merge branch 'develop' into tezos-polish-cache-overdelegated 1 day ago

README.md

Ledger Live (desktop) CircleCI Crowdin

Ledger Live is a new generation wallet desktop application providing a unique interface to maintain multiple cryptocurrencies for your Ledger Nano S / Blue. Manage your device, create accounts, receive and send cryptoassets, …and many more.

<img src="/docs/screenshot.png" width="550"/>

Architecture

Ledger Live is an hybrid desktop application built with Electron, React, Redux, RxJS,.. and highly optimized with ledger-core C++ library to deal with blockchains (sync, broadcast,..) via ledger-core-node-bindings. It communicates to Ledger hardware wallet devices (Nano S / Blue) to verify address and sign transactions with ledgerjs. Some logic is shared with live-common.

Coins

  • supported by ledger-core (C++) implementation: BTC BCH LTC DASH QTUM ZEC BTG STRAT DOGE DGB HSR KMD PIVX ZEN VTC PPC VIA XST POSW CLUB
  • supported by JavaScript implementation: ETH, ETC, XRP

Setup

Requirements

  • NodeJS LTS/carbon (Node 8.x)
  • Yarn LTS
  • Python v2.7.10 (used by node-gyp to build native addons)
  • You will also need a C++ compiler

Install

# install dependencies
yarn

Run

# launch the app
yarn start

Build

# Build & package the whole app
# Creates a .dmg for Mac, .exe installer for Windows, or .AppImage for Linux
# Output files will be created in dist/ folder
yarn dist

Note: Use yarn dist:dir to speed up the process: it will skip the packaging step. Handy for debugging builds. You can also use BUNDLE_ANALYZER=1 yarn dist:dir to generate webpack-bundle-analyzer report.


Config (optional helpers)

Environment variables

(you can use a .env or export environment variables)

DEV_TOOLS_MODE=bottom # devtools position Options: right, bottom, undocked, detach
HIDE_DEV_WINDOW=0

## flags for development purpose
DEBUG_DEVICE=1
DEBUG_NETWORK=1
DEBUG_COMMANDS=1
DEBUG_DB=1
DEBUG_ACTION=1
DEBUG_TAB_KEY=1
DEBUG_LIBCORE=1
DEBUG_WS=1
SKIP_GENUINE=1
SKIP_ONBOARDING=1
SHOW_LEGACY_NEW_ACCOUNT=1
HIGHLIGHT_I18N=1
EXPERIMENTAL_WS_EXPORT=0
EXPERIMENTAL_LANGUAGES=1
EXPERIMENTAL_EXPLORERS=1

## constants
GET_CALLS_TIMEOUT=30000
GET_CALLS_RETRY=2
SYNC_MAX_CONCURRENT=6
SYNC_BOOT_DELAY=2000
SYNC_ALL_INTERVAL=60000
CHECK_APP_INTERVAL_WHEN_INVALID=600
CHECK_APP_INTERVAL_WHEN_VALID=1200
CHECK_UPDATE_DELAY=5000

Launch storybook

We use storybook for UI development.

yarn storybook

Run code quality checks

yarn lint                # launch eslint
yarn prettier            # launch prettier
yarn flow                # launch flow
yarn test                # launch unit tests

Programmatically reset app files

# clear the dev electron user data directory
# it remove sqlite db, accounts, settings
# useful to start from a fresh state

yarn reset-files

File structure

.
├── dist : output folder generate by the build
├── scripts : commands (for building, releasing,...)
├── src
│   ├── internals : code that run on the 'internal' thread.
│   ├── main : code that run on the 'main' thread.
│   ├── renderer : code that run on the 'renderer' thread
│   ├── components : all the React components
|       └── modals : sub levels for the modals
│   ├── api : related to HTTP APIs
│   ├── bridge : an abstraction on top of blockchains apis (libcore / js impls)
│   ├── commands : an abstraction to run code over the internal thread
│   ├── icons : all the icons of our app, as React components.
│   ├── config : contains the constants,...
│   ├── helpers : generic folder for our business logic (might be reorganized in the future)
│   ├── middlewares : redux middlewares
│   ├── actions : redux actions
│   ├── reducers : redux reducers
│   ├── sentry : for our bug tracker
│   ├── stories : for storybook
│   ├── styles : theme
│   ├── logger.js : abstraction for all our console.log s
│   └── types : global flow types
├── static
│   ├── docs
│   ├── fonts
│   ├── i18n
│   ├── images
│   └── videos
├── webpack : build configuration
└── yarn.lock

Troubleshooting

The ‘gyp==0.1’ distribution was not found and is required by the application

You will need to install the python gyp module

pip install git+https://chromium.googlesource.com/external/gyp

see stackoverflow/40025591