The wallet creation with monero-wallet-cli results in a seemingly random mnemonic seeds and wallet address. Since the result of any computer program is deterministic and thus relies on an external random state to create true randomness - what mechanism creates the entropy for Moneros wallet creation algorithm?

Imagine I set up two computer systems with identical hardware (lets assume I can do this, ie. that there is a fabrication line that is able to produce identical parts). Lets assume further that these machines share one connection to the outside world, ie. input devices and power cables. I shall start them at the same time (in a relativistic sense, that is their CPU clocks are running synchronously). Will the wallet creation on these two systems result in the same wallet?

  • I would like to know more about the sources of randomness too.
    – user141
    Oct 9, 2016 at 13:40

1 Answer 1


Monero uses a Keccak based PRNG. I believe this is one that was proposed by the team behind Keccak, though I am not 100% certain. The seeding is done from /dev/urandom (or, for Windows, some Windows specific API). There is no reseeding, but the Keccak construction is rated for LOTS of random numbers before reseeding is needed.

See "Sponge-based pseudo-random number generators" by Bertoni et al. I can't recall where I got it from, but it might be keccak.noekeon.org, though I can't see it there at first glance.

It would be nice if someone reviewed that code to make sure it really is the same construction.

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.