What is Nostr?
WalletScrutiny
npub1j9k…uswx
2024-04-19 15:03:19

WalletScrutiny on Nostr: ...



Most people don't dig that deeply but when they do, they have this question. Computers are 1s and 0s. They are digital. How can they be non-deterministic??

Software development mostly revolves around performance both in the end product and the development process. Only very few developers even spend a thought on reproducibility. So if they compile something and it compiles 5 seconds faster, they can test the feature they were working on 5 seconds quicker. These two reasons result in stuff being non-reproducible as:

Files are processed in the order they come and that order depends on many factors. For example some file systems sort by date and others by file name.

Compilers can optimize the result, so compiling something with one version of the compiler will often give a different result than when compiled with another version.

The compiler might process multiple files in parallel and pack them into the result as they finish compiling.

Other sources of problems are timestamps or file paths that end up in the result.

Some tools on purpose use randomnes to generate IDs that are unique to every build.

Of the above issues, all result in non-reproducibility by our standards. While some lead us to comment on the build looking benign as the diff is only some random number appearing twice, others might also be benign but result in differences far too big to quickly judge with the tools we are using.

The more developers care about reproducibility over only performance, the better it will get but there are some widely used tools that consistently cause issues and maybe should just be avoided in wallets.
Author Public Key
npub1j9kttlc86w63emmldd4h74rekyqpksqup6p9trhp5gjsf374qlyszvuswx