IOTA on the Ledger Nano S: Development Report 4


“A picture says more than a 1000 words” really applies to this one, doesn’t it?

For those who don’t get what’s happening here: What you’re seeing here is an address generated by the Ledger using our C implementation of IOTA, and by the official IOTA Wallet. Both are generating the first address using the same seed completely separated from each-other. By having identical addresses we can proof that the implementation works correctly. quod erat demonstrandum

Note: The Ledger address doesn’t end with the same characters as on the official IOTA Wallet, because the checksum is missing on the Ledger’s end, this is not a problem, we will add the checksum on the web-wallet, since the data integrity is already guaranteed from the Ledger to the PC by data encryption over USB.

This is our first successful attempt at making the first valid security 2 IOTA address! (Which is being used by default by the IOTA wallet). There is really nothing more left to say.

We had some setbacks, as expected. We got some trouble getting keccak to work, which got finally solved this week, after some rigorous testing on a dusty saturday, we can conclude it’s now working 100%!

Ok cool, what now?

Currently, the consensus between Wollac, Diskings and me is that we start on creating the functionality that will allow the Ledger to sign and create transactions, I will start getting more involved in the Web Wallet (to use your Ledger with) while they will work more on the Ledger itself. We will work in parallel.

[su_list icon=””]

  • Creation and signing of transactions
  • Develop a simple web wallet application to interact with the Ledger and provide basic functionality while waiting for more advanced wallets to integrate Ledger support.
  • Appropiate recovery features


I expect no to little setbacks at this point, as signing transactions can be done in parts (each transaction in a bundle can be signed separated).

Development of the Web Wallet has already begun. The repo is here.

If you’re a web or frontend developer, and like to contribute to the Ledger project but were unable to help because C wasn’t your kind of language? You can contact me (peterwilli) in the Discord (links below) to coordinate further development of the wallet.

Wrapping up

First, I’d like to thank the group I’ve been working with on this project. Diskings ( and Wollac (

Wollac also made some huge contributions that allowed us to improve the performance of address generation from nearly 2 minutes for just 1 address to just under 4 seconds. He did so by implementing 32-bit arithmetic rather than ‘stacks’ of 8-bits what we used to do. This improvement was known to us, but we backlogged it until we got the address generation working first. Thanks to him, we already have it today! He also pointed out to me that Ledger was indeed capable of using the Ledger’s hardware-keccak as a sponge construction, which I thought was unlikely. This boosted development and I’m very grateful for his contribution, as well as anyone else’s.

I can only say: This is a dream-team to work with on such a complicated, yet small in terms of size project. So a huge shoutout to diskings, wollac and everyone involved!

Would you like to donate or just say hi? Be sure to comment in this post below, or donate IOTA  at:

Please know that the donations made to this address will be shared with everyone who contributes (the contributions has to be worth something, of course)

There is also a group forming a crowd-funding on Reddit at:

Would you like to contribute as a dev? Please check out our new Discord channel to see what’s there to do!

8 replies on “IOTA on the Ledger Nano S: Development Report 4”

[…] Este produto não é tão caro como um  Ledger Nano S,  mas é uma ótima alternativa segura que não quebrará o banco, semelhante ao OpenDime. Atualmente, existe uma equipe que desenvolve o aplicativo Ledger que será ainda mais seguro do que esse produto. O seu progresso é fenomenal e somos grandes fãs deles. Confira o seu progresso  aqui . […]

Amazing work ! I tried the public address generation based on your code and through a STM32F407 MCU. It worked like a charm. Your work is a huge benefit for all the embedded community. Bravo, keep going like that.

Leave a Reply

Your email address will not be published. Required fields are marked *