/ledger-live-desktop

Ledger Live (Desktop)

Primary LanguageHTMLMIT LicenseMIT

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.

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.

Setup

Requirements

  • NodeJS lts/erbium (Node 12.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

Config (optional helpers)

Environment variables

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

NO_DEBUG_COMMANDS=1
NO_DEBUG_DB=1
NO_DEBUG_ACTION=1
NO_DEBUG_TAB_KEY=1
NO_DEBUG_NETWORK=1
NO_DEBUG_ANALYTICS=1
NO_DEBUG_WS=1
NO_DEBUG_DEVICE=1
NO_DEBUG_COUNTERVALUES=1

other envs can be seen in live-common:src/env.js

Run code quality checks

yarn ci

File structure

src
├── main : the main process is the mother of all process. it boots internal and renderer process and starts the window.
├── internal : related to internal thread that runs commands, device logic, libcore,..
├── renderer : everything related to the UI.
│   ├── screens
│   ├── modals
│   ├── components : all components that are not screens or modals, flattened.
│   ├── animations
│   ├── icons
│   ├── images
│   ├── styles
│   ├── bridge : logic related to interacting with accounts and currencies.
│   ├── families : per currency specific logic and components
│   ├── actions : redux actions
│   ├── reducers : redux reducers
│   ├── middlewares
│   ├── analytics
│   ├── fonts
│   ├── hooks
│   ├── i18n : all translation files
│   ├── index.html : html point point
│   ├── index.js : js entry point
│   ├── init.js : initialize the rendering
│   ├── live-common-setup.js : set up live-common for renderer specific parts
│   └── ... other files related to renderer
├── config : constants files. DEPRECATED. will be moved to live-common.
├── helpers : helpers. DEPRECATED. will be moved to live-common or in relevant places.
├── live-common-set-supported-currencies.js : generic set up of supported coins
├── live-common-setup.js : generic set up of live-common
├── logger : internal logging library. used by all thread. produces the "export logs".
├── network.js : network implementation. will eventually move back to live-common.
└── sentry : related to bug report API