I've read a great deal about the impact of quantum computing on cryptocurrencies in:
- https://github.com/theQRL/QRL/blob/master/QRL_whitepaper.pdf
- What effects would a scalable Quantum Computer have on Bitcoin?
- https://bitcoinmagazine.com/articles/bitcoin-is-not-quantum-safe-and-how-we-can-fix-1375242150/
IOTA also claims to be quantum resistant, unfortunately in their whitepaper that is just briefly mentioned in the last paragraph.
I believe they are talking about the impact from Grover's algorithm where doubling the bit-size help. I can't find any information on how they deal with signatures (which would be broken due to Shor's algorithm) however.
Their wallet code mentions:
You can use an address for receiving as long as you have not used it for any outgoing transaction. What this means is that once you have sent a transaction with a specific address as input, you should never use it again. This is because IOTA uses Winternitz one-time signatures which degrade security exponentially after each reuse.
So I suppose they are using a Winternitz variant of Lamport's OTS scheme. But how exactly?
I also found an interesting pull request
In order to prevent the reUse of adresses a message could be display to say that if you re-use the same adresses for transaction the security of your wallet will decrease quadratically .
What does it mean that the "security of your wallet decreases quadratically"? Do they have some Merkele tree with keys to be used? Or how is the relation between address and public/private key in IOTA? If there can only be one transaction with a given input that somehow implies that you always have to transfer all funds?