Ledger Seed is different from Daedalus/Yoroi/Adalite seed

It’s not really an issue, something that someone wants to have resolved. It is well-known that Ledger and software wallet apps use different methods of deriving the master key and I’m not aware of any initiative to change that.

Wallet apps would be free to offer the additional possibility of importing from Ledger seed phrases, but as far as I know there is still none that does it.

Would be good to avoid having to buy another Ledger.

Would be bad, because people could use that not being aware that it totally spoils the security of their hardware wallet. Having done support in these forums for a few months: The latter will happen. A lot! No matter how many warnings you put before it.

I totally understand the security of a ledger hardware wallet and protecting the private keys and would never advise anyone to enter there recovery phrase into a software wallet online. My reasoning behind the question is purely hypothetical. If for instance say ledger went out of business and there was very few hardware devices left and your ledger was damaged for some reason the question is this. I’m left with a recovery phrase that is not able to retrieve my ADA without using another ledger hardware wallet. If I use my hardware wallet recovery phrase to recover any other assets with my ledger private key using a software wallet like Bitcoin, ethereum etc then I could recover them no problem.

This was a thread posted by @SebastienGllmt

Theoretically possible? Yes. In a user-friendly interface? No, unfortunately not. This is because Cardano has a custom way of deriving the root private key from a recovery phrase but Ledger instead uses the standard that other cryptocurrencies follow (that’s why you can’t just type the recovery phrase into Daedalus and have it magically work).

You can see the code required to extract a Ledger private key here: https://repl.it/repls/EvenFairInformation#index.js (pls don’t actually enter your recovery phrase into a website though). However, even with the root key, you will have to write a custom script to use it (no handy tools for importing a wallet from a private key as far as I know)

You can learn more about deriving the root key from a recovery phrase in CIP3: https://github.com/cardano-foundation/CIPs/pull/3

Probably not a lot of people know about this but I do think it’s an issue as you are relying on third party hardware to stay in existence and to always be on the market. You shouldn’t have to rely on third party hardware to gain access to your crypto no matter what. No other crypto has this issue with a ledger recovery phrase only ADA

In this hypothetical scenario, I’m sure there will be a lot of software Ledgers in due time.

As you know yourself, the key derivation of Ledger is documented in CIP 3 and enough people know about it to just implement it if the need arises.

I don’t think you will reach a lot of wallet app developers with this thread. You could try to raise feature requests with them to add that option now.

Yeah that’s fair enough and I suppose you’re right. I’m sure there would be plenty of devs implementing it within weeks if that happened :laughing: Thanks for the quick response

If I ever come to extending my seed recovery tool to a complete wallet app/client, I might be inclined to add that.

For seed recovery, you definitely want it, anyway.

And it’s only a couple of lines of code. The Icarus master key derivation I already have there are six lines (and 26 lines of documentation/tests): https://github.com/HeptaSean/PySeedRecover/blob/main/seedrecover/keyderiv.py#L115-L146

I would deem it not that risky in a command line client. People finding the correct switch will hopefully know not to shoot themselves in the foot. Hopefully!

This is the point. End users will loose trust in ADA, if a seed phrase does not lead to the same wallet, no matter, which hardware/software wallet you are using to recover a wallet. Always!

To my knowledge this is the case with all other cryptos except ADA. I understand the security concerns, but please look through the eyes of the end user.

The solution to this mess is not too complicated: During recovering an ADA wallet the recovering algorithm just has try the different ADA derivation paths and look for a non-empty wallet.

If you look at Trezor-T, they are already scanning different ADA key paths. The same with Solflare on recovering a Solano wallet.

I’m just an end user, and I don’t have the skills to implement this. But the initial ADA key-derivation-mess could be hidden from the end user with this wallet-scanning during a wallet recovery operation.

I have never used another cryptocurrency and certainly did not expect Ledger phrases to work in software wallet apps. :man_shrugging: (They should – almost – never be put in there, anyway.)

Detail: The derivation paths are exactly the same. Only the master key derivation is different. And the one of Ledger is an abomination that hurts to be implemented. But sure, wallet apps could implement that. Try to convince them!

I have never used another cryptocurrency and certainly did not expect Ledger phrases to work in software wallet apps. :man_shrugging: (They should – almost – never be put in there, anyway.)

Your thinking is understandable on the first glance. But if you consider the scenario where you have an accident and you left your 24 words in a safe, you are interested in that somebody is able to recover your tokens. This should be as easy as possible without any additional constraints, right? Even entering the 24 words in Daedalus should grand the person access to the wallet. If e.g. your parents seeing a wallet with 0 ADA they might be thinking you have saved the wrong words or transferred it somewhere else and the tokens are lost. This is the end of the story.

This is the point. End users will loose trust in ADA, if a seed phrase does not lead to the same wallet, no matter, which hardware/software wallet you are using to recover a wallet. Always!

To my knowledge this is the case with all other cryptos except ADA. I understand the security concerns, but please look through the eyes of the end user.

I totally agree this should be supported otherwise we cannot expect to have a mass adaption of ADA.

I recently lost access to my Ledger device(it suddenly stopped turning on) and came across this issue. I am a developer with a little bit of experience in the cardano eco-system, and I didn’t actually know about this difference in the master key derivation. It was very surprising to me not being able to restore my wallet from my seed - I can only imagine how a non-technical person will feel. In my opinion this is not a good look for the chain, even if it is a ledger problem(since it looks like a cardano problem because everything else works fine on ledger).

I agree that no one should ever input their HW seed into a wallet app, however in certain scenarios (like mine) it is required when a wallet will be decommissioned without having access to the device. I think there should be at least one easy solution for this, and I don’t think creating something like that would impact peoples security - people would only need to do this in very specific scenarios and it could be made clear to them to decommission the wallet.

@HeptaSean is it true that I can adapt your script to derive the root private key from my ledger seed(if I input the same derivation path that ledger uses), and then use that key with a tool like cardano-wallet/cardano-cli to sign transactions to move my assets?

Not exactly:

  • Like already said above: The derivation path is exactly the same. The root key derivation is what is different. They start with a different m at the beginning of the path, but then use the same one. A path does not specify what needs to be done completely. In no cryptocurrency. You always need some information about a) what to start with and b) which concrete derivation algorithm to use with the numbers in the path.
  • My tool only does seed recovery. It doesn’t output the keys in any form usable by any other tools, wasn’t meant for it at the time. There are better developed and maintained things already out there:
  • @ATADA has integrated Ledger derivation in his cardano-signer: https://github.com/gitmachtl/cardano-signer#generate-a-keypair-from-hardware-wallet-mnemonics
  • The Python bip_utils have the Ledger derivation implemented: https://github.com/ebellocchia/bip_utils/blob/master/readme/cardano.md#ledger-1
  • You can get something that can be used with cardano-cli out of them, but as far as I can see cardano-wallet – like all the end-user wallet apps – doesn’t support import from key files or other encodings of the key pairs themselves, just from seed phrase – using what they think is the correct derivation method, not Ledger: https://cardano-foundation.github.io/cardano-wallet/api/edge/#operation/postWallet

It is, by the way, not that special to Cardano that same phrases lead to different wallets in other wallet apps. Some time ago, I did a comparison of what Atomic Wallet and Exodus do for different cryptocurrencies. There are a lot of cases where they differ, sometimes one of them uses what seems to be the standard in that ecosystem, sometimes the other. Seems to depend on which intern did the implementation back then. And once they have settled for an implementation, they somehow need to stick with that because incompatibility with itself would be even worse from a user’s viewpoint (and probably also because they don’t really care).

In the case of Cardano, Atomic Wallet and Trust Wallet use the standard everybody else uses and Exodus uses some weird invention nobody else has ever implemented. So, I’d stay away from the latter.

This chaos is not acceptable for the end user. People loose trust in Cardano. Whoever is in the position should talk to the wallet developers, to agree on some standard.

The point of crypto: There is nobody “in the position”.

Allegedly, that is why people are here.

Or to put it differently: There is a standard. Most native Cardano wallet apps adhere to it. They are mostly compatible.

But nobody can force all the others to also do. And nobody can prevent users from using them, especially the multi-chain wallet apps that often have no interest in putting too much work into what is going on on the zillion chains they are (more or less) supporting.

Thanks for the clarification @HeptaSean. Using cardano-signer definitely seems like the best way to get my keys, that is a neat tool.

You are right and we are all responsible for contributing towards the things we need in this industry, perhaps I will take some time to investigate and document and easy enough approach to solving my problem, for others that come across it.

Cardano Management has to define standards for the wallet developers. I think this is very important. There is no disambiguity with BTC, ETH,… shame on Cardano.

Have a look at the Trezor HW-wallet: they find the Ledger-based Cardano-wallet by scanning the different derivation paths. Same with Solflare: they scan all possible SOL-paths.

There is no “Cardano Management”. Again: That’s the whole point of cryptocurrencies.