IOTA on the Ledger Nano S: Development Report 3


It’s been nearly 2 weeks since the last report! Time flies when you’re having fun, I’d say. Let’s just dive right into it. For those who don’t know what’s going on, please read version 1 and 2 of this report: We’re building IOTA on the Ledger Nano S!

Some household announcements

In the previous report, I asked for a better and smaller implementation for the ternary store to save more memory. I’m just gonna let this sink in for a moment: I didn’t expect a single reply. Maybe 1.

Instead, we got like 10 replies with 10 different implementations. It was overwhelming. I didn’t even had the time to look at it all. It was like Santa Claus getting all those drawings from children all over the world.

So after a week of going through replies, I think that we need to coordinate this project differently. So from today on, all the project’s code move to a central GitHub organisation:
We also have our own Discord channel at:

From here on out, we will use these channels to discuss our implementations and perform changes. In the discord, we will have some read-only channels where the developers who are actually working on the Ledger support can discuss in peace, in case the channel get’s too crowded.

This way everyone can see in real-time what has been done and what’s happening. Maybe Santa can learn from this?

Anyway, you’re welcome to join, developer or not. You’ve got some ideas to contribute? This channel is for you!

How is the Ledger going?

Going great! In one of the 10 replies, an user by the name Diskings (/u/allsix) talked to me and he was heavily working on the road to Ledger support for IOTA. He was working on it while I was busy working on a super secret iota-related project. He made it possible to generate our first actual private key and address. That’s right. We’ve got our actual, first address and private key made! So a huge shout-out to Diskings!

I’ve talked with him and the consensus was that it’s best if we centralize our work, so we can work in parallel on the problems we’re facing. I am confident that we will have full Ledger support much quicker thanks to this.

So where are we?
We tend to keep an up-to-date list of todo’s in our GitHub, but right now we haven’t yet, so I’ll drop it here, but for more recent updates, be sure to check out our GitHub.

[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


Currently, due to severe memory limitations of the Nano, the private key does not fit on the ledger. When encoded with 4 (or 5) trits per byte, half of the private key can be stored, and then worked with at a time to generate the public key.

However encoding and decoding the key takes time. Right now it looks like when you want to make a transaction, you will need to leave your ledger plugged in for a minute or two while it generates the address and signs the transaction (after which you can disconnect it again). Ultimately we will work towards making it as seamless as possible given the RAM we have to work with.

There are further optimizations to be made, and are currently investigating methods of generating the keys in native trits (one trit per byte) to speed up the process by never storing more than one fragment of the private key at a time.. To learn more about our storage system, check report 1.

We still have lots of tests to run but we feel this is a major milestone for getting IOTA on the Ledger.

Wrapping up

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!