Skycoin Ledger Nano BOLOS application overview and architecture - SkycoinProject/ledger-nano GitHub Wiki

How to create a skycoin module for Ledger

The ledger environment

Ledger has two main products: ledger Blue and ledger Nano

ledger Blue is an advanced tablet that is out of the scope for what we wanna do here, so we are gonna put the focus on "ledger nano" for the rest of this document.

Ledger blue Ledger nano

The document Ledger Blue development environment explains how to install the SDK to develop applications for ledger nano or ledger blue.

Ledger devices integrate an operating system they call "BOLOS". The ledger hardware architecture is comprised of two microcontrollers: a ST31 "Secure Element" in charge of managing the memory of the device and the STM32 MCU in charge of the interface with the outside world.

BOLOS is split between two hardware chips, one being secure (the ST31 Secure Element), and the other having JTAG enabled and acting as a proxy (the STM32 MCU)

Hardware architechture

The ST31 Secure Element and the BOLOS Kernel are in charge of making sure the device memory is safe. Meaning it is impossible to make any I/O operation on the device memory without going through the BOLOS Kernel API.

Create ledger applications

BOLOS operating system allows loading "user applications".

To develop a compatible application the documentation recommends the following:

It is then possible to build an application and load it on the device. There are code examples on ledger's github account.

A quick overview on the code shows that any simple hello world is full of BOLOS calls. Which means it is necessary to master the BOLOS environment before considering developing a Ledger application.

BOLOS operating system

Still editing this section...

Questions left to answer:

  • what are the possibilities the BOLOS environment offers
  • what are the features we need to implement a skycoin application (seed management, skycoin signature algorithm etc...)