Virtually all existing IOTA software uses seeds for key/address generation.

However, it seems that there's nothing stopping a program from generating keys/addresses at random — as long as it has the private key for an address, it can spend those IOTAs regardless of whether it used a seed.

For example, a wallet might generate private keys using an RNG. It would have to store the private keys somewhere, of course, but it seems like otherwise it would function perfectly.

Alternatively, someone might build a wallet that generates keys/addresses deterministically from a phrase, etc.

Can IOTA wallets/software work this way, or is it necessary to use seeds to generate keys/addresses?

  • a "phrase" is just a (differently encoded) seed. :-)
    – mihi
    Commented Nov 30, 2017 at 21:37

2 Answers 2


RNG would work but we don't use it

because we would have to store all of the private keys. It's just more convenient to have only one seed from which you generate all the private keys. Furthermore, all current APIs use seeds and you can't even sign a transaction without the seed unless you are doing it manually (The API functions are specified to take a seed as parameter)

When I'm talking about APIs, I only mean the iota.lib.js. I'm not familiar with the other ones but I assume they are similar because they are all based on iota.lib.js.

Generating from a mnemonic phrase

would be possible as well. But the more likely solution to this would be to generate a seed with a length of 81 from the phrase. And then generate the private keys as usual from that seed.
The development of an algorithm that does this is already being discussed here.


It can work the way you explained (without seeds). The alternative you mentioned is how it's done now, but the phrase is called "seed".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.