THIS IS AN EXPERIMENTAL PROJECT. Please don't start depending on it, and do not use it in production. Large parts of this project are subject to change, and there might be critical vulnerabilities. This is an open source project developed by a dedicated team in Ledger, but it is not an official Ledger product. |
---|
The App Streaming project allows running any app on Ledger Nano devices (X, S+, Stax) without restrictions such as memory limitations. Basically, the Ledger Nano runs a VM which can launch any app ; the (unlimited) memory is exported encrypted on the PC or the smartphone of the user.
For developers, development is now standard since there's no restriction on the stack, heap nor code size. Modern software stack can be used (which implies standard toolchains, tests, fuzzing tools and standard libraries) along usual development patterns. The code is totally independent from the firmware and the same app is compatible with Nano X, Nano S+ and Stax. An emulator such as speculos isn't required anymore and apps can be developed in Rust.
For end-users, it means that there's no restrictions on the number of apps since there's no app install anymore: all supported apps are immediately available. In a similary way, there are no no app updates anymore, app version is always the latest. Regarding the transport, there's no USB or BLE deconnection when switching from an app to another.
(Excerpt from docs/app-dev.md).
- Run the VM with speculos:
speculos.py --model nanox vm/bin/app.elf
- Launch the app:
./host/stream.py --speculos --app ./app/build/app-swap/app-swap
A few apps are available in the app/ folder:
- app/app-ethereum/ is a subset of the current Ethereum app, with the addition of EIP-712 support
- app/app-swap/ is a subset of the current Exchange app
- app/app-rust/: also implements some features of the Exchange app, in Rust.
- 2 SDKs are available, a C SDK and a Rust SDK.
The Nano RISC-V VM app is in vm/ and Python tools to interact with the VM app are in host/.
Once the project will be adopted more broadly, it will be split into several repositories. Meanwhile, it's more convenient to work on a mono-repo.
Technical and usage information can be found in the docs/ folder.
This project is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
Feel free to join the #streaming-project discord channel.