We are happy to announce an early release of the Kusama app for Ledger Nano S and X. This project is supported by a grant of the Web3 Foundation.

Please be aware that this is *work in progress* and the app should be used for only test purposes. In alignment with Kusama’s tagline: “Expect Chaos!”

Ledger Nano S is a secure but small device. This means that supporting third generation chains such as Kusama and Polkadot is not an easy task.

Ledger apps require going back in time and leaving the nice advantages of Rust. Instead, highly compact embedded C code has to be written. While substrate’s serialization approach (SCALE) was designed for these environments, Kusama requires a large amount of data types and transactions. Not only limitations in memory and call stack size are important but also a well maintainable design is critical. Substrate based chains are expected to significantly evolve over time.

This app concentrates on Kusama, however, we expect this initial design to provide a platform for the future Polkadot app. Moreover, our roadmap includes a code generation tool that will allow an almost automatic generation of Ledger apps for Substrate-based chains directly from metadata originating from a node.

Some quick but important clarifications

As already expressed, this is an early release. We have decided to share the app with the community before our milestone 2 deadline in order to receive early feedback from the Kusama community. Please, feel free to open issues in the corresponding repository.

The installation process at this stage can be a bit painful. Basically, you will need to build the app from scratch. Once the app is ready, it will be published by Ledger in their app catalog and it will be a lot easier. Please bear with this for now :)

SS58 addresses are well supported, however, subkey mnemonics are not compatible. Ledger HD derivation is based on BIP32 and at the moment, it is not possible to adapt those. This means that a mnemonic generated by subkey cannot be used as a Ledger mnemonic and vice-versa.

Supported transactions. We have generated hundreds of test vectors for different transaction types. There are some transaction types that may still fail or that their output is not ideal. Kusama has a large amount of transaction types and we will be supporting most of them in the next few weeks.

Integration

With respect to integration, we also have good and exciting news.

Basic integration can be done using an npm package that we have already published. You can also find some Vue.js examples, integration tests, etc.

However, it is very exciting to announce that we’ve been working along with Jaco Greeff (polkadot-js) and Ledger Nano S is already supported in Polkadot-js and Polkadot-UI! Kudos to Jaco, his help has been invaluable!

While this integration is based on our npm package, we believe it is a good idea to directly use Polkadot-js. This means that it will be easier for us to collaborate directly with Parity and get improvements propagated to all Polkadot-js users in no time!

Feedback

We are glad to receive any feedback on this early release.

Please open issues at https://github.com/zondax/ledger-polkadot. You can also reach me out in twitter @jleni

While we may not have time to provide installation support, we will be definitely keen on hearing and addressing any issues in the next release.