Glossary
- APDU
APDU stands for “Application Protocol Data Unit”. It designate a message which is transmitted from a client to an application, or the other way around. APDUs transit through USB or Bluetooth.
- Application
In this documentation, an application is a piece of software, build around the Ledger Secure SDK, which runs on a Ledger cold wallet device, such as a NanoS, NanoS+ or NanoX.
- Backend
In
Ragger
, a backend is a library which allows to communicate with a Ledger cold wallet device, either a real one (like a physical NanoS/S+/X), or an emulated one (thanks toSpeculos
).- BAGL
BAGL stands for “BOLOS Application Graphics Library”, and is a library integrated into the C SDK managing the UI of the NanoS, NanoX and NanoS+ devices. It is embedded into the SDK
- BOLOS
BOLOS is the operating system running on all Ledger hardware wallets. Its code is not open-source. Its capabilities can be used through the open-source SDK.
- Client
A client is any piece of software accessing a service made available by a server; but in this documentation, a client refers to a piece of code able to communicate with an application.
Typically, the client of an application programmatically enables the capabilities of its application: signing a payload, triggering a transaction, changing the configuration, …
- Firmware
A firmware usually designates the Ledger device device type and SDK version. Currently, device types are NanoS, NanoS+ and NanoX. The version depends on the type.
Ragger
stores this information in theFirmware
class.See also SDK.
- Golden snapshot
In
Ragger
, golden snapshots are application screen’s snapshots which are considered as references. They are used when testing an application to check the application behaves as expected, by comparing them if actual snapshots.- Layout
In the Stax SDK, a Layout refers to an element displayed on a Stax screen. Examples of Layouts can be a button, on a specific location, a keyboard, or just a centered text. This name is used in
Ragger
to designate the class allowing to interact with a displayed layout.- LedgerComm
LedgerComm is the original open-source library allowing to communicate with a Ledger device. It is hosted on GitHub.
- LedgerWallet
LedgerWallet is the newer open-source library allowing to communicate with a Ledger device. It is hosted on GitHub
- NBGL
NBGL stands for “New BOLOS Graphic Library”, and is the successor of BAGL for more recent devices such as Stax. It is embedded into the SDK.
It has also been back-ported to older devices such as NanoS+ and NanoX (but not NanoS) to ease interface flow development.
- Page
In the Stax SDK, a Page refers to a specific displayed Stax screen.A welcome page, a setting page are example of Pages. This name is also used in
Ragger
to designate the class allowing to interact with a displayed page.Pages are created from Layouts and are used to create Use Cases
- Pytest
Pytest is a largely used, open-source Python testing tool. Its
fixture
mechanism is integrated intoRagger
.- RAPDU
“Response APDU” (RAPDU), designates the response of an application following an APDU from the client to the application.
- SDK
The SDK is the open-source code allowing an application to be compiled for a Ledger cold wallet device. On top of an interface to exploit BOLOS capabilities, it provides boilerplate functions, graphic abstractions and other useful libraries for developing apps.
It is written in C. Its code for the various devices has been unified into this GitHub repository, although the current NanoS SDK is still based on an older version, versioned on here.
A Rust SDK also exists in this repository, but should not yet be taken as production ready.
- Speculos
Speculos is an open-source Ledger device emulator, allowing easy and fast testing of an application. It is hosted on GitHub.
It is composed of the emulator itself, and a HTTP client-server module allowing to easily control and communicate with said emulator.
- Stax
Stax is the most premium Ledger device which, in a programmatic point of view, mostly differs from previous devices by its richer UI and a touch screen, justifying the usage of the new graphic library, NBGL.
- Use Case
In the Stax SDK, a Use Case refers to a pre-designed Page or group of Pages. For instance, the settings Use Case manages one or several Pages in order to display and change the settings. This name is used in
Ragger
to designate the class allowing to interact with a Use Case.