Address reuse is currently being prevented by a list of all addresses which have already sent a transaction (previousEpochsSpentAddresses.txt) and this list is checked by the full node (or remote node) before sending a transaction. This list contains roughly 650,000 addresses as of today and is 51MB in size.

If my understanding is correct, every single transaction will generate an additional entry in this list since the sender address shouldn't be reused any more. So if IOTA would process 1 Million transactions per day, this list would grow around 75MB a day, is this correct? Why are there only 650,000 entries right now and why it grew just by about 260,000 entries within the last 6 months from the initial commit? This would imply an average growth rate of 1,500 newly used addresses per day which have not been used before. Are these all correctly used transactions or is there any additional selection of addresses which land on this list?

1 Answer 1


This is meant to be a temporary measure, until a better wallet comes along. Once everyone is using a "stateful" wallet that remembers the addresses used in the past and avoids their reuse, there will be no need for this global list anymore.

From https://github.com/iotaledger/iri/issues/503:

After a snapshot, old transactions are removed from the database, this can lead to wallet users unwittingly reusing private keys to sign transactions from already spent addresses, or receiving funds to said addresses in the first place.

this is due to the stateless nature of the current GUI wallet.

this is a temporary enhancement, till stateful wallets become the norm.

On the second point in your question:

I assume IOTA probably has seen more than that amount of transactions up to today.

With multiple TPS per second on the average, this is certainly true. This must be just a subset of addresses used so far. Presumably this list is all the developers have because the addresses used before the previous snapshot were not saved and are now lost?

Edit: this is an answer based on an as authoritative source as its gets - the IOTA developers. I don't see why it should be downvoted. Clearly, according to the developers this is a temporary hack, therefore it will not affect the scalability of IOTA in the future. Perhaps you don't like their approach, or have doubts that stateful wallets will solve this problem - I can relate to these concerns, but they are not valid reasons for a downvote.

This question and the answer is also relevant: Roadmap: How to avoid address reuse with automatic snapshots?

  • 2
    How would my "stateful" wallet know if you already used the address I want to send you some IOTA to? And how does it work when restoring your wallet from Seed on some other device? It obviously will not have any of the history which addresses have been used and which not.
    – janowitz
    Feb 25, 2018 at 19:02
  • Thanks for your addition but it's not me downvoting...
    – janowitz
    Feb 26, 2018 at 13:22
  • @janowitz there a currently 2 solutions which are being worked on to prevent this address reuse problem: Iota Cheques and MAIA
    – GJEEE
    Jun 25, 2018 at 23:21
  • @GJEEE Good to see finally someone is working on this major flaw of IOTA. However, will the spent address list be pruned / abandoned?
    – janowitz
    Jun 27, 2018 at 8:24
  • @janowitz afaik this textfile-based solution is temporary
    – GJEEE
    Jun 27, 2018 at 13:26

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.