DocumentationLedger LiveAccountsExplanationGeneral Architecture

General architecture

App architecture

  • The Ledger device acts as a signing box and it defers most of the technical complexity to Ledger Live (Ledger’s official wallet application). Ledger Live contains the business logic and is (typically) a GUI, running on a computer or a phone connected to the device.
  • The Ledger embedded application acts as a transaction signer key in a deterministic way. Having an embedded application publicly listed in Ledger Live is a mandatory requirement before getting your blockchain supported on Ledger Live.
  • In the case of Ledger Live, and for performance reason, a third layer is handling the indexing of transaction for a given blockchain.
LLM Send

All the JavaScript code related to the Ledger Live applications is in the ledger-live monorepository.

This library is built upon a pretty standard ES6 + Typescript stack and relies on a bunch of ledgerjs packages, RxJS 6.x, bignumber.js and React + Redux for some front-end utilities and hooks.

Coin Framework

The Coin Framework library is dedicated to coin integration. It provides utilities to help create Coin Modules with generic functions and a common interface signature.

Coin Modules

All integrated coins are implemented in their own coin module in the libs directory, following the naming convention. To be fully integrated, a libs/ledger-live-common/src/families dedicated folder needs to contain a few “glue” files - that can be shared by multiple crypto-assets that use the same implementation (i.e. Bitcoin-like coins share the same bitcoin family).

Live Common

The Common library of Ledger Live is called Ledger-live-common. It provides a single library compatible with both desktop and mobile version of Ledger Live.

It includes a CLI for testing purpose or for using Ledger Live features directly from a terminal (in a limited way).

It is designed to have very generic models and mechanics (for currencies, accounts, storage, synchronisation, events…) that also facilitates new blockchain integrations through flexibility.

Communication with the Device

ledgerjs is a set of packages. It allows a JavaScript application to use the API of an embedded app. Ledger embedded apps are using APDU to transfer data and commands to and from the external world. ledgerjs only allows to use commands developed on the embedded app.

Communication with the different blockchains

The Ledger Live application will retrieve transaction history and broadcast new transactions using different explorers.

As part of a Ledger Live blockchain integration, you should provide an indexer allowing a Ledger Live user to synchronize his account in a timely manner. It can be an open source project or your own explorer.

The Ledger Live application uses our own explorers for Bitcoin and Ethereum forks.

Ledger
Copyright © Ledger SAS. All rights reserved. Ledger, Ledger Nano S, Ledger Vault, Ledger OS are registered trademarks of Ledger SAS