-
Notifications
You must be signed in to change notification settings - Fork 9
How to create a skycoin module for Ledger
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.
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)
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.
BOLOS operating system allows loading "user applications".
To develop a compatible application the documentation recommends the following:
- an application compiled using BOLOS_ENV comprised of LLMV clang compiler and a gcc cross compiler for the proper ARM target
- The application should link to the ledger nano BOLOS_SDK
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.
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...)
- Manual
- How to check whether device is genuine
- Initialize the wallet setting up
- Getting to know the wallet
- Update firmware
- Restore configuration
- Backup your seed
- Test your seed (Dry run)
- Optimize account security
- Send and receive crypto assets
- Wiping a Skywallet
- Remove Skywallet from wallet list
- Rename a Skywallet
- If transaction is too large
- Check the firmware version
- Manage the PIN code
- Troubleshooting
- Not yet implemented future features